#include "SignalArray.h"

namespace Entities {

INIT_FACTORY(SignalArray)

SignalArray::SignalArray():Array<SmartPtr<Signal>>(){
}

SignalArray::SignalArray(int _nbData):Array<SmartPtr<Signal>>(_nbData){}

SignalArray::SignalArray(Array<SmartPtr<Signal>> & data):Array<SmartPtr<Signal>>(data){}

void SignalArray::addAll(const SignalArray & obj, int start){
	Array<SmartPtr<Signal>>::addAll(obj, start);
}

void SignalArray::addAll(const SignalArray & obj){
	Array<SmartPtr<Signal>>::addAll(obj);
}

void SignalArray::add(const SmartPtr<Signal> & _data, int i){
	Array<SmartPtr<Signal>>::add(_data, i);
}

void SignalArray::add(const SmartPtr<Signal> & _data){
	Array<SmartPtr<Signal>>::add(_data);
}

void SignalArray::removeAll(int start, int size){
	Array<SmartPtr<Signal>>::removeAll(start, size);
}

void SignalArray::removeAll(int start){
	Array<SmartPtr<Signal>>::removeAll(start);
}

void SignalArray::remove(int i){
	Array<SmartPtr<Signal>>::remove(i);
}

void SignalArray::clear(){
	Array<SmartPtr<Signal>>::clear();
}

Cloneable * SignalArray::clone(){
	Array<SmartPtr<Signal>> _array(Array<SmartPtr<Signal>>::size());
	for (int i=0; i < Array<SmartPtr<Signal>>::size(); i++){
		_array.at(i) = dynamic_cast<Signal*>(Array<SmartPtr<Signal>>::at(i).clone());
	}
	return new SignalArray(_array);
}

ObjectInputStream & SignalArray::load(ObjectInputStream & iis){
	Array<SmartPtr<Signal>>::load(iis);
	return iis;
}

ObjectOutputStream & SignalArray::save(ObjectOutputStream & oos) const{
	Array<SmartPtr<Signal>>::save(oos);
	return oos;
}

void SignalArray::concat(Array<SignalArray> & _array){
	Array<SignalArray>::Iterator ite;

	for (ite=_array.begin(); ite!=_array.end(); ++ite){
		addAll(*ite);
	}
}

}